/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package facade;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
import persistencia.InterfazPersistencia;

/**
 *
 * @author carlos
 */
public class TableFacade extends DefaultTableModel
{
    private InterfazPersistencia entidad;
    
    
    

    public TableFacade(InterfazPersistencia entidad) 
    {
        super(0,0);
        this.entidad=entidad;
        String[] encabezado=getEncabezado();
        super.setColumnIdentifiers(encabezado);
        cargarDatos();
        
        
    }
    
    
    
    
    
    private String[] getEncabezado()
    {
        String [][]datos=entidad.getInterfazDatos();
        String[] encabezado=new String[datos.length];
        
        
        for (int i = 0; i < datos.length; i++) 
        {
            String dato=datos[i][0];
            encabezado[i]=dato;
        }
        return encabezado;
    }
    
    private void limpiar()
    {
        while(this.getRowCount()>0)
        {
            this.removeRow(0);
        }
    }
    
    public void cargarDatos()
    {
       // this.removeRow(row);
        limpiar();
        String [][]datos=entidad.getInterfazDatos();
        ResultSet rs=entidad.consultaTodos();
        
        //int i=0;
        try {
            while(rs.next())
            {
                String []fila=new String[datos.length];;
                for (int j = 0; j < datos.length; j++) 
                {
                    fila[j]=rs.getString(datos[j][0]);
                }
                super.addRow(fila);
            }
        } catch (SQLException ex) {
            Logger.getLogger(TableFacade.class.getName()).log(Level.SEVERE, null, ex);
        }
            
    
        
    }
    
    
    public void filtroDatos(String texto)
    {
       // this.removeRow(row);
        limpiar();
        String [][]datos=entidad.getInterfazDatos();
        ResultSet rs=entidad.consultaTodos();
        
        
        try {
            while(rs.next())
            {
                boolean opcion=false;
                String []fila=new String[datos.length];;
                for (int j = 0; j < datos.length; j++) 
                {
                    fila[j]=rs.getString(datos[j][0]);
                    if(fila[j].indexOf(texto)!=-1)
                    {
                        opcion=true;
                    }
                }
                
                if(opcion)
                {
                    super.addRow(fila);
                }
                
            }
        } catch (SQLException ex) {
            Logger.getLogger(TableFacade.class.getName()).log(Level.SEVERE, null, ex);
        }
            
    
        
    }
    
}
